#include<iostream>
#include<sys/types.h>
#include<signal.h>

//argc 整数类型，命令行参数的数量，程序名本身算一个参数，所以argc最小为1
//argv 一个指向字符指针的数组，每个元素指向一个命令行参数字符串    argv[0]指向程序名，后续元素依次指向其他命令行参数
/*
    int main(int argc,char *argv[])
    {
        printf("参数数量：%d",argc);    
        for(int i = 0;i < argc;i++)
        {
            printf("参数：%d：%s",i,argv[i]);
        }
        return 0; 
    }

如果编译运行该程序，运行命令为：./program arg1 arg2
上面的程序输出：
    参数数量：3
    参数 0：./program
    参数 1：arg1
    参数 2：arg2
*/

// 运行方式: ./mykill signumber pid       所以argc为3    argv的对应内容 argv[0]:./mykill   argv[1]:signumber  argv[2]:pid
int main(int argc,char *argv[])
{
    if(argc != 3)
    {
        std::cout<<"./mykill signumber pid"<<std::endl;
        return 1;
    }

    int signum = std::stoi(argv[1]);     //由字符串转成整数    第一个就把对应的信号char  转换成为对应的数字
    pid_t target = std::stoi(argv[2]);   //第二个就把对应的进程id   pid的字符串   转换为了对应的数字
    
    int n = kill(target,signum);
    if(n == 0)
    {
        std::cout<<"send "<<signum<<"to "<<target<<"success!";
    }
    return 0;
}
